[アップデート] AWS FIS で安全対策のために全ての実験を実行できないようにする「Safety Lever」が導入されました
いわさです。
AWS FIS (Fault Injection Service) を使うことで AWS 上のワークロードに対して障害を発生させることが出来ます。
カオスエンジニアリングのために使われるサービスです。
カオスエンジニアリングは本質的には本番環境で実行できるほうが有益ですが、それでも何か重要なイベントなどで逆に AWS FIS による事故発生を抑制したい場合があります。
今朝のアップデートで AWS FIS に安全対策機能として「Safety Lever」が登場しました。
こちらをオンにすると実行中の全ての実験が停止され、そしてオンの間は新しい実験も開始できなくなります。
安全対策の有効化
有効化のためには AWS FIS のコンソールで実験メニューに追加されたこちらのボタン「すべての実験を停止」を押します。
安全対策有効化のための理由を入力することが出来ます。
GetSafetyLever API のレスポンス、あるいは CloudTrail の UpdateSafetyLeverState 履歴から有効化した理由をトレースできそうなので、何かしら情報を残しておくと良いでしょう。
実行中の実験停止も行われるため有効化まで少し時間が必要になる場合があります。
実行中の実験がない場合には即座に有効化されます。
安全対策が有効化されました。
AWS FIS の各機能の上部に次のようなバナー(実験を実行できません)が表示されるようになりました。わかりやすい。
ちなみにこの安全対策の設定ですがリージョナルです。
なので、東京リージョンで有効化してもバージニア北部リージョンでは引き続き実験が実行できる状態です。
安全対策有効化中に実験を実行
では有効化した状態で新しい実験を開始してみましょう。
テンプレートから実験開始画面までは遷移出来ます。この画面でもバナーは表示されていますね。
そして実験を開始ボタンも押すことが出来ました。
実験は開始されたのですが直後に自動でキャンセルされました。
ステータスから理由を確認してみると Safety Lever によってキャンセルされたことが確認出来ます。なるほど。実験の実行が出来ないというより実験の初期化フェーズで自動キャンセルされるというのが正しいですね。
再開してみる
有効化した設定を解除したいと思います。
操作は先程まで色々なところで表示されていたバナー上の「安全対策のエンゲージを解除」ボタンから行います。ぽち。
同じように解除の理由を入力します。
すぐに安全対策機能がオフとなり、いつものコンソールの状態に戻りました。
バナーも表示されていません。
さいごに
本日は AWS FIS で安全対策のために全ての実験を実行できないようにする「Safety Lever」が導入されたので使ってみました。
なるほど。あまり考えたことが無かったですが AWS FIS によって期待しないタイミングで誤って本番障害が発生してしまう可能性もあるのか...
AWS FIS 以外にも障害注入を行う方法はあるので、これだけで良いわけではないですが、例えば CI/CD パイプラインやイベントスケジューラーなどでカオスエンジニアリングを組みこんでいるような高度な使い方をされている場合に、この時だけは発生させたくない。というケースでは一括で抑制できるので良さそうですね。